8
תגובות

מערכת התחברות

פתח P_H_P ,
אני עכשיו עובד על מערכת התחברות ואני רוצה לנסות "דרך" חדשה.
אז אני אשמח אם תוכלו לרשום לי את דעתכם עליה, כמה היא מאובטחת ולרשום את הדרך שבה אתם משתמשים.

ברגע שמשתמש יתחבר לאתר, בקוקי/סשן שלו ישמרו שני דברים:
אחד האיידי שלו, ושתיים מחרוזת של 32 אותיות ומספרים רנדומליים.

כל מחרוזת כזאת תישמר בטבלה חדשה במסד הנתונים שתשמור את האיידי של המשתמש + התאריך שבו נוצרה המחרוזת.
ועכשיו בכל פעם שמשתמש יכנס לעמוד באתר, זה יבדוק את האידי והמחרוזת ששמורים אצלו בסשן/קושי מול המסד.

ופעם ביום יופעל סקריפט שיבדוק מה המחרוזות שעבר זמן מסויים מאז שנוצרו וימחק אותן מהמסד.

יש לכם רעיון טוב יותר ומאובטח יותראו שזה בסדר?

8 תשובות

avatar ענה yonikal56 ב 14 לפברואר 2014 #

עם סשן אתה לא צריך לדאוג, קוקי אפשר לשנות ולכן כדאי לעשות דבר כזה.

avatar ענה nirbe ב 14 לפברואר 2014 #

@yonikal56, אפשר גם לגנוב סשן.
אתה יכול להשתמש גם ב IP כפרמטר להתחברות, השאלה היא עד כמה זה רלוונטי בפרויקט שלך.

avatar ענה yonikal56 ב 14 לפברואר 2014 #

@nirbe וואלה באמת לא ידעתי, תודה שהעשרת לי את הידע.

avatar ענה OrelBeY ב 15 לפברואר 2014 #

למה להסתבך? :-)

avatar ענה P_H_P ב 15 לפברואר 2014 #

אז במקרה של cookie אין יותר בעיה - אני אשמור בקוקי את האיידי של המשתמש + מחרוזת רנדומלית שתשמר במסד וכך אני אאמת מי מחובר.
אבל עדיין לא הבנתי מה לעשות במקרה של סשן... זה מספיק פשוט לשמור את האידי של המשתמש בסשן בגלל שזה במילא ימחק מהר, או שיש דרך מאובטחת יותר?

avatar ענה OrelBeY ב 15 לפברואר 2014 #

מובן שתצטרך להגן על העוגייה (חל גם לגבי הסשן, כמובן, כי הוא מוגדר באמצעות עוגייה).
אם אתה רוצה שהמשתמש יהיה מחובר רק 20 דק' ושהוא יתנתק ברגע שהוא יסגור את הכרטיסייה - תוכל להשתמש בסשן. אבל למה שתרצה את זה?

avatar ענה P_H_P ב 15 לפברואר 2014 #

גולשים שלא יסמנו "זכור אותי" יהיו מחוברים דרך סשן, ואלה שכן דרך עוגייה.
אז במקרה של סשן, מספיק לשמור בסשן עצמו את האיידי של המשתמש, לא? (בגלל שלמשתמש אין גישה לקובץ והוא נמצא בשרת).

תודה רבה על כל העזרה :)

avatar ענה OrelBeY ב 15 לפברואר 2014 #

עקרונית כן, אבל סשן יגביל את המשתמש ל-20 דקות, ואתה ממש לא תרצה את זה ברוב המקרים. פשוט תשתמש בעוגייה שתפוג ברגע שהחלון ייסגר:

setcookie("cookieName", "cookieValue", 0);
setcookie("cookieName", "cookieValue"); // the default is 0

ואל תשכח מ-HTTP Only.
גם אם המשתמש בוחר ב"זכור אותי" אני ממליץ לך לבקש מהדפדפן להשאיר את העוגייה רק לשבוע או לחודש, ולא להמון זמן.